﻿/*
 * Programador: Joao Palma
 * Data: 23-06-2010
 * Hora: 12:16  
 */
using System;
using System.Data;
using System.Windows.Forms;

namespace Operacional
{
	public partial class frmManutencao : Form
	{
		#region "Declarações"

		private frmLinhas _linhas;
		private frmEntrada _entrada = new frmEntrada();
		private DataView _dvLinhasTarefas = new DataView();
		private string _numLinha;

		#endregion
		
		public frmManutencao()
		{ InitializeComponent(); }

		private void frmManutencao_Load(object sender, EventArgs e)
		{		    
			Dock = DockStyle.Fill;
			tmr.Enabled = true;
			tmr2.Enabled = false;
			frmEntrada.tmrLogin.Enabled = false;

			_numLinha = frmLinhas.numLinha;
			lblTitulo.Text += _numLinha;

			_dvLinhasTarefas = frmLinhas.dvLinhasTarefas;
			if (_dvLinhasTarefas.Count > 0)
			{
				string estado = _dvLinhasTarefas[_dvLinhasTarefas.Count - 1]["Estado"].ToString();
				mudaBotoes(estado);
				if (estado == "PedFinalizado" && btnArranque.Enabled)
					btnManutencao.Text = _dvLinhasTarefas[_dvLinhasTarefas.Count - 1]["Duracao"].ToString();

				_dvLinhasTarefas.RowFilter = string.Format("Linha={0} And Estado Like '{1}'", _numLinha, "Ped%");
				if (_dvLinhasTarefas.Count > 0)
					txtObs.Text = _dvLinhasTarefas[_dvLinhasTarefas.Count - 1]["Observacoes"].ToString().Replace('"', ' ').Trim();				
			}
			else
				mudaBotoes("");

			if (btnFim.Enabled)
			{
				tmr2.Enabled = true;
				tmr2.Start();
			}
		}

		private void btnPedido_Click(object sender, EventArgs e)
		{
			string bt = ((Button)sender).Name;
			DataRow dRow;
			switch (bt)
			{
				#region Pedido
				case "btnPedido":
					_entrada.LockTool.PerformClick();
					#region Nova Row
					dRow = frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].NewRow();
					dRow.ItemArray = new Object[] { null,  _numLinha , "","", DateTime.Now, "", "Pedido", "",
						frmEntrada.dvUsers[0][0].ToString()};

					frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].Rows.Add(dRow);
					frmEntrada.daLinhasTarefas.Update(frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"]);
					#endregion
					mudaBotoes("Pedido");
					break;
				#endregion
				#region Inicio Manutenção
				case "btnInicio":
					_entrada.LockTool.PerformClick();
					#region Nova Row
					dRow = frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].NewRow();
					dRow.ItemArray = new Object[]{null, _numLinha , "", "", DateTime.Now, btnManutencao.Text, "PedIniciado", 
											 "", frmEntrada.dvUsers[0][0].ToString()};

					frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].Rows.Add(dRow);
					frmEntrada.daLinhasTarefas.Update(frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"]);
					#endregion
					mudaBotoes("PedIniciado");
					tmr2.Enabled = true;
					tmr2.Start();
					break;
				#endregion
				#region Fim
				case "btnFim":
					_entrada.LockTool.PerformClick();
					#region Nova Row
					dRow = frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].NewRow();
					dRow.ItemArray = new Object[] { null, _numLinha  , "", "", DateTime.Now, btnManutencao.Text, "PedFinalizado", "",
						frmEntrada.dvUsers[0][0].ToString()};

					frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].Rows.Add(dRow);
					frmEntrada.daLinhasTarefas.Update(frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"]);

					#endregion
					mudaBotoes("PedFinalizado");
					tmr2.Stop();
					tmr2.Enabled = false;
					break;
				#endregion
				#region Arranque
				case "btnArranque":
					_entrada.LockTool.PerformClick();
					#region Nova Row

					dRow = frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].NewRow();
					dRow.ItemArray = new Object[] { null, _numLinha, "", "", DateTime.Now, btnDtPedido.Text, "ArranqueLinha", "",
						frmEntrada.dvUsers[0][0].ToString()};

					frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].Rows.Add(dRow);
					frmEntrada.daLinhasTarefas.Update(frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"]);

					#endregion
					_linhas = new frmLinhas { MdiParent = Program.entrada };
					_linhas.Show();
					Close();
					break;
				#endregion
			}
		}

		private void mudaBotoes(string botao)
		{
			switch (botao)
			{
				case "Pedido":
					btnPedido.Enabled = false;
					btnInicio.Enabled = true;
					btnFim.Enabled = false;
					btnArranque.Enabled = false;
					break;
				case "PedIniciado":
					btnPedido.Enabled = false;
					btnInicio.Enabled = false;
					btnFim.Enabled = true;
					btnArranque.Enabled = false;
					break;
				case "PedFinalizado":
					btnPedido.Enabled = false;
					btnInicio.Enabled = false;
					btnFim.Enabled = false;
					btnArranque.Enabled = true;
					break;
				case "ArranqueLinha":
					btnPedido.Enabled = true;
					btnInicio.Enabled = false;
					btnFim.Enabled = false;
					btnArranque.Enabled = false;
					break;
				default:
					btnPedido.Enabled = true;
					btnInicio.Enabled = false;
					btnFim.Enabled = false;
					btnArranque.Enabled = false;
					break;
			}

			if ((!btnInicio.Enabled && !btnFim.Enabled) && !btnArranque.Enabled) return;
			txtObs.Enabled = true;
			btnGravaObs.Enabled = true;
		}

		private void tmr_Tick(object sender, EventArgs e)
		{
			_dvLinhasTarefas.RowFilter = string.Format("[Linha] = {0}", _numLinha );
			if ( _dvLinhasTarefas .Count <= 0) return;
			if ((  _dvLinhasTarefas[_dvLinhasTarefas.Count - 1]["Estado"].ToString().IndexOf("Pedido") == -1 &&
				 !btnFim.Enabled) && !btnArranque.Enabled) return;
			_dvLinhasTarefas.RowFilter = string.Format("Linha= {0} And Estado Like 'Pedido'", _numLinha );
			if (_dvLinhasTarefas.Count == 0)
				_dvLinhasTarefas.RowFilter = "Linha=" + _numLinha ;
			TimeSpan spn = TimeSpan.Parse(DateTime.Now.Subtract(Convert.ToDateTime(_dvLinhasTarefas[_dvLinhasTarefas.Count - 1]["Data"])).ToString());
			btnDtPedido.Text = Math.Abs(spn.TotalDays).ToString("00") + "." + Math.Abs(spn.Hours).ToString("00") +
							   Math.Abs(spn.Minutes).ToString(":00") + Math.Abs(spn.Seconds).ToString(":00");
		}

		private void tmr2_Tick(object sender, EventArgs e)
		{
			_dvLinhasTarefas.RowFilter = string.Format("Linha={0}", _numLinha );

			if (_dvLinhasTarefas.Count > 0)
			{
				_dvLinhasTarefas.RowFilter = string.Format("Linha='{0}' And Estado Like 'PedIniciado'", _numLinha );
				TimeSpan spn = TimeSpan.Parse(DateTime.Now.Subtract(Convert.ToDateTime(_dvLinhasTarefas[_dvLinhasTarefas.Count - 1]["Data"])).ToString());
				btnManutencao.Text = Math.Abs(spn.TotalDays).ToString("00") + "." + Math.Abs(spn.Hours).ToString("00") +
					Math.Abs(spn.Minutes).ToString(":00") + Math.Abs(spn.Seconds).ToString(":00");
			}
		}

		private void btnGravaObs_Click(object sender, EventArgs e)
		{
			frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].Clear();
			frmEntrada.daLinhasTarefas.Fill(frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"]);

			_dvLinhasTarefas.RowFilter = string.Format("Linha='{0}'", _numLinha );
			if (_dvLinhasTarefas.Count > 0)
			{
				DataRow[] dRow = frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"].Select("Id=" + _dvLinhasTarefas[_dvLinhasTarefas.Count - 1]["Id"]);
				dRow[0]["Observacoes"] = "\"" + txtObs.Text + "\"";

				frmEntrada.daLinhasTarefas.Update(frmEntrada.dsFilkemp.Tables["dtLinhas_Tarefas"]);
				MessageBox.Show("Observação gravada.", "Sucesso");
			}
		}
	}
}